WebAssembly์ ๊ฐ๋น์ง ์ปฌ๋ ์ (GC) ์ ์์ ๋ํ ํฌ๊ด์ ์ธ ํ๊ตฌ๋ก, ๊ด๋ฆฌํ ๋ฉ๋ชจ๋ฆฌ, ๊ฐ์ฒด ์ฐธ์กฐ, ์น ๋ฐ ๋น ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฏธ๋์ ๋ฏธ์น๋ ์ํฅ์ ๊ฒํ ํฉ๋๋ค.
WebAssembly ๊ฐ๋น์ง ์ปฌ๋ ์ : ๊ด๋ฆฌํ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ๊ฐ์ฒด ์ฐธ์กฐ ์์ ํด๋ถ
WebAssembly(Wasm)๋ ์ด์ ๊ฐ๋ฅํ๊ณ ํจ์จ์ ์ด๋ฉฐ ์์ ํ ์คํ ํ๊ฒฝ์ ์ ๊ณตํ์ฌ ์น ๊ฐ๋ฐ์ ํ๋ช ์ ์ผ์ผ์ผฐ์ต๋๋ค. ์๋ ์น ๋ธ๋ผ์ฐ์ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ์ค๊ณ๋ Wasm์ ๊ธฐ๋ฅ์ ๋ธ๋ผ์ฐ์ ๋ฅผ ํจ์ฌ ๋ฐ์ด๋์ด ์๋ฒ๋ฆฌ์ค ์ปดํจํ , ์์ง ์ปดํจํ , ์ฌ์ง์ด ์๋ฒ ๋๋ ์์คํ ์์๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฐพ๊ณ ์์ต๋๋ค. ์ด๋ฌํ ์งํ์ ์ค์ํ ๋ถ๋ถ์ WebAssembly ๋ด์์ ๊ฐ๋น์ง ์ปฌ๋ ์ (GC)์ ์ง์์ ์ธ ๊ฐ๋ฐ ๋ฐ ๊ตฌํ์ ๋๋ค. ์ด ๊ธฐ์ฌ์์๋ Wasm GC์ ๋ณต์ก์ฑ์ ์์ธํ ์ดํด๋ณด๊ณ ๊ด๋ฆฌํ ๋ฉ๋ชจ๋ฆฌ, ๊ฐ์ฒด ์ฐธ์กฐ ๋ฐ ๊ด๋ฒ์ํ Wasm ์ํ๊ณ์ ๋ฏธ์น๋ ์ํฅ์ ํ๊ตฌํฉ๋๋ค.
WebAssembly ๊ฐ๋น์ง ์ปฌ๋ ์ (WasmGC)์ด๋ ๋ฌด์์ ๋๊น?
์ญ์ฌ์ ์ผ๋ก WebAssembly๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋ํ ๊ธฐ๋ณธ ์ง์์ด ๋ถ์กฑํ์ต๋๋ค. ์ฆ, Java, C#, Kotlin ๋ฑ GC์ ํฌ๊ฒ ์์กดํ๋ ์ธ์ด๋ JavaScript๋ก ์ปดํ์ผํ๊ฑฐ๋(Wasm์ ์ฑ๋ฅ ์ด์ ์ค ์ผ๋ถ๋ฅผ ๋ฌดํจํ) Wasm์์ ์ ๊ณตํ๋ ์ ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๋ด์์ ์์ฒด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ฒด๊ณ๋ฅผ ๊ตฌํํด์ผ ํ์ต๋๋ค. ์ด๋ฌํ ์ฌ์ฉ์ ์ ์ ์๋ฃจ์ ์ ๊ธฐ๋ฅ์ ์ด์ง๋ง ์ข ์ข ์ฑ๋ฅ ์ค๋ฒํค๋๋ฅผ ๋ฐ์์ํค๊ณ ์ปดํ์ผ๋ ์ฝ๋์ ๋ณต์ก์ฑ์ ์ฆ๊ฐ์์ผฐ์ต๋๋ค.
WasmGC๋ ํ์คํ๋๊ณ ํจ์จ์ ์ธ ๊ฐ๋น์ง ์ปฌ๋ ์ ๋ฉ์ปค๋์ฆ์ Wasm ๋ฐํ์์ ์ง์ ๋์ ํ์ฌ ์ด๋ฌํ ์ ํ ์ฌํญ์ ํด๊ฒฐํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ธฐ์กด GC ๊ตฌํ์ด ์๋ ์ธ์ด๋ Wasm์ ๋ณด๋ค ํจ๊ณผ์ ์ผ๋ก ํ๊ฒํ ํ ์ ์์ด ์ฑ๋ฅ์ด ํฅ์๋๊ณ ์ฝ๋ ํฌ๊ธฐ๊ฐ ์ค์ด๋ญ๋๋ค. ๋ํ ์ฒ์๋ถํฐ GC๋ฅผ ํ์ฉํ ์ ์๋ Wasm์ฉ์ผ๋ก ํน๋ณํ ์ค๊ณ๋ ์๋ก์ด ์ธ์ด๋ฅผ ์ํ ๋ฌธ์ ์ด์ด์ค๋๋ค.
WebAssembly์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ์ค์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น?
- ๊ฐ์ํ๋ ์ธ์ด ์ง์: WasmGC๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์๋ ์ธ์ด๋ฅผ WebAssembly๋ก ํฌํ ํ๋ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํฉ๋๋ค. ๊ฐ๋ฐ์๋ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋๋ ์ฌ์ฉ์ ์ ์ GC ๊ตฌํ์ ๋ณต์ก์ฑ์ ํผํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๋ ผ๋ฆฌ์ ์ง์คํ ์ ์์ต๋๋ค.
- ํฅ์๋ ์ฑ๋ฅ: Wasm ๋ฐํ์์ ํตํฉ๋ ์ ์ค๊ณ๋ GC๋ Wasm ์์ฒด๋ก ์์ฑ๋ ์ฌ์ฉ์ ์ ์ GC ์๋ฃจ์ ๋ณด๋ค ์ฑ๋ฅ์ด ๋ฐ์ด๋ ์ ์์ต๋๋ค. ์ด๋ ๋ฐํ์์ด ํ๋ซํผ๋ณ ์ต์ ํ ๋ฐ ๋ฎ์ ์์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ์ ์ ํ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ์ฝ๋ ํฌ๊ธฐ ๊ฐ์: ์ฌ์ฉ์ ์ ์ GC ๊ตฌํ์ ์ฌ์ฉํ๋ ์ธ์ด๋ ์ข ์ข ๋ฉ๋ชจ๋ฆฌ ํ ๋น, ๊ฐ๋น์ง ์ปฌ๋ ์ ๋ฐ ๊ฐ์ฒด ๊ด๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์๋นํ ์ฝ๋๊ฐ ํ์ํฉ๋๋ค. WasmGC๋ ์ด๋ฌํ ์ค๋ฒํค๋๋ฅผ ์ค์ฌ ๋ ์์ Wasm ๋ชจ๋์ ์์ฑํฉ๋๋ค.
- ํฅ์๋ ๋ณด์: ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐ ๋๊ธ๋ง ํฌ์ธํฐ์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ๊ณ ์ด๋ ๋ณด์ ์ทจ์ฝ์ ์ ์ ๋ฐํ ์ ์์ต๋๋ค. ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ฌ์ฉํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ํ์ํ์ฌ ์ด๋ฌํ ์ํ์ ์ํํฉ๋๋ค.
- ์๋ก์ด ์ฌ์ฉ ์ฌ๋ก ํ์ฑํ: WasmGC์ ๊ฐ์ฉ์ฑ์ WebAssembly์ ํจ๊ณผ์ ์ผ๋ก ๋ฐฐํฌํ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฒ์๋ฅผ ํ์ฅํฉ๋๋ค. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ๋ฐ ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ํฌ๊ฒ ์์กดํ๋ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋์ฑ ์คํ ๊ฐ๋ฅํด์ง๋๋ค.
WebAssembly์์ ๊ด๋ฆฌํ ๋ฉ๋ชจ๋ฆฌ ์ดํด
WasmGC๋ฅผ ๋ ์์ธํ ์ดํด๋ณด๊ธฐ ์ ์ WebAssembly์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ด๋ฆฌ๋๋ ๋ฐฉ์์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. Wasm์ ์๋๋ฐ์ค ํ๊ฒฝ ๋ด์์ ์๋ํ๋ฉฐ ์์ฒด ์ ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด ๋ฉ๋ชจ๋ฆฌ๋ Wasm ๋ชจ๋์ด ์ก์ธ์คํ ์ ์๋ ์ฐ์์ ์ธ ๋ฐ์ดํธ ๋ธ๋ก์ ๋๋ค. GC๊ฐ ์์ผ๋ฉด ์ด ๋ฉ๋ชจ๋ฆฌ๋ ๊ฐ๋ฐ์ ๋๋ ์ปดํ์ผ๋ฌ๊ฐ ๋ช ์์ ์ผ๋ก ๊ด๋ฆฌํด์ผ ํฉ๋๋ค.์ ํ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
WasmGC๊ฐ ์๋ ๊ฒฝ์ฐ ๊ฐ๋ฐ์๋ ์ข ์ข ๋ค์๊ณผ ๊ฐ์ ๊ธฐ์ ์ ์์กดํฉ๋๋ค.- ๋ช ์์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ํด์ : `malloc` ๋ฐ `free`(์ข ์ข libc์ ๊ฐ์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณต)์ ๊ฐ์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ํ ๋นํ๊ณ ํด์ ํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์คํ๊ฒ ์ถ์ ํด์ผ ํ๋ฉฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค.
- ์ฌ์ฉ์ ์ ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์์คํ : Wasm ๋ชจ๋ ์์ฒด ๋ด์์ ์ฌ์ฉ์ ์ ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๋๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ฅผ ๊ตฌํํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ ๋ง์ ์ ์ด๋ฅผ ์ ๊ณตํ์ง๋ง ๋ณต์ก์ฑ๊ณผ ์ค๋ฒํค๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
์ด๋ฌํ ๊ธฐ์ ์ ํจ๊ณผ์ ์ผ ์ ์์ง๋ง ๊ฐ๋ฐ์์๊ฒ ์๋นํ ๋ถ๋ด์ ์ฃผ๊ณ ์ฑ๋ฅ ๋ฌธ์ ๋ฐ ๋ณด์ ์ทจ์ฝ์ ์ ์ ๋ฐํ ์ ์์ต๋๋ค. WasmGC๋ ๋ด์ฅ๋ ๊ด๋ฆฌํ ๋ฉ๋ชจ๋ฆฌ ์์คํ ์ ์ ๊ณตํ์ฌ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ํํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
WasmGC๋ฅผ ์ฌ์ฉํ ๊ด๋ฆฌํ ๋ฉ๋ชจ๋ฆฌ
WasmGC๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ Wasm ๋ฐํ์์์ ์๋์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ฐํ์์ ํ ๋น๋ ๊ฐ์ฒด๋ฅผ ์ถ์ ํ๊ณ ๊ฐ์ฒด์ ๋ ์ด์ ๋๋ฌํ ์ ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ํ์์ฑ์ด ์์ด์ง๊ณ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐ ๋๊ธ๋ง ํฌ์ธํฐ์ ์ํ์ด ์ค์ด๋ญ๋๋ค.
WasmGC์ ๊ด๋ฆฌํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ค๋ฅธ ๋ฐ์ดํฐ์ ์ฌ์ฉ๋๋ ์ ํ ๋ฉ๋ชจ๋ฆฌ์ ๋ถ๋ฆฌ๋์ด ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฐํ์์ ๊ด๋ฆฌํ ๊ฐ์ฒด์ ๋ํด ํน๋ณํ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ต์ ํํ ์ ์์ต๋๋ค.
WasmGC์ ๊ฐ์ฒด ์ฐธ์กฐ
WasmGC์ ํต์ฌ ์ธก๋ฉด์ ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋๋ค. ๊ธฐ์กด ์ ํ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ๊ณผ ๋ฌ๋ฆฌ WasmGC๋ Wasm ๋ชจ๋์ด ๊ด๋ฆฌํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๋ด์์ ๊ฐ์ฒด๋ฅผ ์ง์ ์ฐธ์กฐํ ์ ์๋ ์ฐธ์กฐ ์ ํ์ ๋์ ํฉ๋๋ค. ์ด๋ฌํ ์ฐธ์กฐ ์ ํ์ ๊ฐ์ฒด์ ์ก์ธ์คํ๊ณ ์กฐ์ํ๋ ํ์ ์์ ํ๊ณ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.์ฐธ์กฐ ์ ํ
WasmGC๋ ๋ค์๊ณผ ๊ฐ์ ์๋ก์ด ์ฐธ์กฐ ์ ํ์ ๋์ ํฉ๋๋ค.- `anyref`: ๋ชจ๋ ๊ด๋ฆฌํ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์๋ ๋ฒ์ฉ ์ฐธ์กฐ ์ ํ์ ๋๋ค.
- `eqref`: ์ธ๋ถ์์ ์์ ํ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ ์ ํ์ ๋๋ค.
- ์ฌ์ฉ์ ์ ์ ์ฐธ์กฐ ์ ํ: ๊ฐ๋ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ํน์ ๊ฐ์ฒด ์ ํ์ ๋ํ๋ด๊ธฐ ์ํด ์์ฒด ์ฌ์ฉ์ ์ ์ ์ฐธ์กฐ ์ ํ์ ์ ์ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ฐธ์กฐ ์ ํ์ ํตํด Wasm ๋ชจ๋์ ํ์ ์์ ํ ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด์ ํจ๊ป ์์ ํ ์ ์์ต๋๋ค. Wasm ๋ฐํ์์ ์ฐธ์กฐ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉ๋๊ณ ํ์ ์ค๋ฅ๊ฐ ๋ฐฉ์ง๋๋๋ก ํ์ ๊ฒ์ฌ๋ฅผ ์ ์ฉํฉ๋๋ค.
๊ฐ์ฒด ์์ฑ ๋ฐ ์ก์ธ์ค
WasmGC๋ฅผ ์ฌ์ฉํ๋ฉด ๊ด๋ฆฌํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ ํน์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๊ฐ ์์ฑ๋ฉ๋๋ค. ์ด๋ฌํ ๋ช ๋ น์ด๋ ์๋ก ์์ฑ๋ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ฐํํฉ๋๋ค.๊ฐ์ฒด์ ํ๋์ ์ก์ธ์คํ๊ธฐ ์ํด Wasm ๋ชจ๋์ ์ฐธ์กฐ์ ํ๋ ์คํ์ ์ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉํ๋ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐํ์์ ์ด ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฐ๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์์น์ ์ก์ธ์คํ๊ณ ํ๋ ๊ฐ์ ๊ฒ์ํฉ๋๋ค. ์ด ํ๋ก์ธ์ค๋ Java ๋ฐ C#๊ณผ ๊ฐ์ ๋ค๋ฅธ ๊ฐ๋น์ง ์์ง ์ธ์ด์์ ๊ฐ์ฒด์ ์ก์ธ์คํ๋ ๋ฐฉ๋ฒ๊ณผ ์ ์ฌํฉ๋๋ค.
์์ : WasmGC์์ ๊ฐ์ฒด ์์ฑ ๋ฐ ์ก์ธ์ค(๊ฐ์ ๊ตฌ๋ฌธ)
์ ํํ ๊ตฌ๋ฌธ๊ณผ ๋ช ๋ น์ด๋ ํน์ Wasm ํด์ฒด์ธ ๋ฐ ์ธ์ด์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ง๋ง ๋ค์์ WasmGC์์ ๊ฐ์ฒด ์์ฑ ๋ฐ ์ก์ธ์ค๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ณด์ฌ์ฃผ๋ ๊ฐ๋จํ ์์ ๋๋ค.
; ์ ์ ๋ํ๋ด๋ ๊ตฌ์กฐ์ฒด ์ ์
(type $point (struct (field i32 x) (field i32 y)))
; ์ ์ ์ ์์ฑํ๋ ํจ์
(func $create_point (param i32 i32) (result (ref $point))
(local.get 0) ; x ์ขํ
(local.get 1) ; y ์ขํ
(struct.new $point) ; ์ ์ ๊ฐ์ฒด ์์ฑ
)
; ์ ์ x ์ขํ์ ์ก์ธ์คํ๋ ํจ์
(func $get_point_x (param (ref $point)) (result i32)
(local.get 0) ; ์ ์ฐธ์กฐ
(struct.get $point 0) ; x ํ๋ ๊ฐ์ ธ์ค๊ธฐ(์คํ์
0)
)
์ด ์์ ์์๋ `struct.new`๋ฅผ ์ฌ์ฉํ์ฌ ์ `point` ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ `struct.get`์ ์ฌ์ฉํ์ฌ ํด๋น `x` ํ๋์ ์ก์ธ์คํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. `ref` ์ ํ์ ํจ์๊ฐ ๊ด๋ฆฌํ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ์ ํจ๊ป ์๋ํ๊ณ ์์์ ๋ํ๋ ๋๋ค.
๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํ WasmGC์ ์ด์
WasmGC๋ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์๋นํ ์ด์ ์ ์ ๊ณตํ์ฌ WebAssembly๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ํ๊ฒํ ํ๊ณ ๋ ๋์ ์ฑ๋ฅ์ ๋ฌ์ฑํ ์ ์๋๋ก ํฉ๋๋ค.Java ๋ฐ Kotlin
Java ๋ฐ Kotlin์๋ ๋ฐํ์์ ๊น์ด ํตํฉ๋ ๊ฐ๋ ฅํ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์์ต๋๋ค. WasmGC๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ์ธ์ด๊ฐ ๊ธฐ์กด GC ์๊ณ ๋ฆฌ์ฆ ๋ฐ ์ธํ๋ผ๋ฅผ ํ์ฉํ์ฌ ์ฌ์ฉ์ ์ ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์๋ฃจ์ ์ ํ์์ฑ์ ์ค์ผ ์ ์์ต๋๋ค. ์ด๋ ์๋นํ ์ฑ๋ฅ ํฅ์๊ณผ ์ฝ๋ ํฌ๊ธฐ ๊ฐ์๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
์์ : ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์คํ ๋๋ ๊ฒ์ ์์ง๊ณผ ๊ฐ์ ๋ณต์กํ Java ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ํ์ ์์ ์ผ๋ก Wasm์ผ๋ก ์ปดํ์ผํ์ฌ ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํด WasmGC๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. ๊ฒฐ๊ณผ Wasm ๋ชจ๋์ ์น ๋๋ WebAssembly๋ฅผ ์ง์ํ๋ ๋ค๋ฅธ ํ๋ซํผ์ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
C# ๋ฐ .NET
C# ๋ฐ .NET ์์ฝ์์คํ ๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ํฌ๊ฒ ์์กดํฉ๋๋ค. WasmGC๋ฅผ ์ฌ์ฉํ๋ฉด .NET ์ ํ๋ฆฌ์ผ์ด์ ์ ํฅ์๋ ์ฑ๋ฅ๊ณผ ๊ฐ์๋ ์ค๋ฒํค๋๋ก Wasm์ผ๋ก ์ปดํ์ผํ ์ ์์ต๋๋ค. ์ด๋ ์น ๋ธ๋ผ์ฐ์ ๋ฐ ๊ธฐํ ํ๊ฒฝ์์ .NET ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํ ์๋ก์ด ๊ฐ๋ฅ์ฑ์ ์ด์ด์ค๋๋ค.
์์ : ASP.NET Core ์ ํ๋ฆฌ์ผ์ด์ ๋๋ Blazor ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ฐ์ .NET ๊ธฐ๋ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ Wasm์ผ๋ก ์ปดํ์ผํ์ฌ ๋ธ๋ผ์ฐ์ ์์ ์์ ํ ์คํํ ์ ์์ผ๋ฉฐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํด WasmGC๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ์๋ฒ ์ธก ์ฒ๋ฆฌ์ ๋ํ ์์กด๋๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
๊ธฐํ ์ธ์ด
WasmGC๋ ๋ค์๊ณผ ๊ฐ์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ฌ์ฉํ๋ ๋ค๋ฅธ ์ธ์ด์๋ ์ด์ ์ ์ ๊ณตํฉ๋๋ค.
- Python: Python์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ Java ๋๋ .NET๊ณผ ๋ค๋ฅด์ง๋ง WasmGC๋ Wasm์์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ณด๋ค ํ์คํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
- Go: Go์๋ ์์ฒด ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์์ผ๋ฉฐ WasmGC๋ฅผ ํ๊ฒํ ํ๋ ๊ธฐ๋ฅ์ Wasm ๊ฐ๋ฐ์ ๋ํ ํ์ฌ TinyGo ์ ๊ทผ ๋ฐฉ์์ ๋ํ ๋์์ ์ ๊ณตํฉ๋๋ค.
- ์๋ก์ด ์ธ์ด: WasmGC๋ฅผ ํตํด ์ฒ์๋ถํฐ GC๋ฅผ ํ์ฉํ ์ ์๋ WebAssembly์ฉ์ผ๋ก ํน๋ณํ ์ค๊ณ๋ ์๋ก์ด ์ธ์ด๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
๊ณผ์ ๋ฐ ๊ณ ๋ ค ์ฌํญ
WasmGC๋ ์๋ง์ ์ด์ ์ ์ ๊ณตํ์ง๋ง ๋ช ๊ฐ์ง ๊ณผ์ ์ ๊ณ ๋ ค ์ฌํญ๋ ์ ์ํฉ๋๋ค.๊ฐ๋น์ง ์ปฌ๋ ์ ์ผ์ ์ค์ง
๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋ฐํ์์ด ์ฌ์ฉํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํ๋ ๋์ ์คํ์ ์ผ์ ์ค์ง๋ฅผ ๋์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ผ์ ์ค์ง๋ ์ค์๊ฐ ์ฑ๋ฅ ๋๋ ๋ฎ์ ๋๊ธฐ ์๊ฐ์ด ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋์ ๋๊ฒ ๋ํ๋ ์ ์์ต๋๋ค. ์ฆ๋ถ ๊ฐ๋น์ง ์ปฌ๋ ์ ๋ฐ ๋์ ๊ฐ๋น์ง ์ปฌ๋ ์ ๊ณผ ๊ฐ์ ๊ธฐ์ ์ ์ด๋ฌํ ์ผ์ ์ค์ง๋ฅผ ์ํํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ง๋ง ๋ฐํ์์ ๋ณต์ก์ฑ์ ์ถ๊ฐํ๊ธฐ๋ ํฉ๋๋ค.
์์ : ์ค์๊ฐ ๊ฒ์ ๋๋ ๊ธ์ต ๊ฑฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ผ์ ์ค์ง๋ ํ๋ ์ ์ญ์ ๋๋ ๊ฑฐ๋ ์คํจ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ์ด๋ฌํ ์๋๋ฆฌ์ค์์ GC ์ผ์ ์ค์ง์ ์ํฅ์ ์ต์ํํ๋ ค๋ฉด ์ ์คํ ์ค๊ณ ๋ฐ ์ต์ ํ๊ฐ ํ์ํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๊ณต๊ฐ
๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๊ณต๊ฐ์ ๋๋ฆด ์ ์์ต๋๋ค. ๋ฐํ์์ ๊ฐ์ฒด๋ฅผ ์ถ์ ํ๊ณ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ํํ๊ธฐ ์ํด ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํด์ผ ํฉ๋๋ค. ์ด๋ ์๋ฒ ๋๋ ์์คํ ๋๋ ๋ชจ๋ฐ์ผ ์ฅ์น์ ๊ฐ์ด ๋ฉ๋ชจ๋ฆฌ ๋ฆฌ์์ค๊ฐ ์ ํ๋ ํ๊ฒฝ์์ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค.
์์ : RAM์ด ์ ํ๋ ์๋ฒ ๋๋ ์์คํ ์์ WasmGC์ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฒํค๋๋ ์ค์ํ ์ ์ฝ ์กฐ๊ฑด์ด ๋ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ ์คํ๊ฒ ๊ณ ๋ คํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๊ณต๊ฐ์ ์ต์ํํ๋๋ก ์ฝ๋๋ฅผ ์ต์ ํํด์ผ ํฉ๋๋ค.
JavaScript์์ ์ํธ ์ด์ฉ์ฑ
Wasm๊ณผ JavaScript ๊ฐ์ ์ํธ ์ด์ฉ์ฑ์ ์น ๊ฐ๋ฐ์ ์ค์ํ ์ธก๋ฉด์ ๋๋ค. WasmGC๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Wasm๊ณผ JavaScript ๊ฐ์ ๊ฐ์ฒด๊ฐ ์ ๋ฌ๋๋ ๋ฐฉ์์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. `anyref` ์ ํ์ ๋ ํ๊ฒฝ ๊ฐ์ ๊ด๋ฆฌํ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ๋ฌํ๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ์ง๋ง ๊ฐ์ฒด๊ฐ ์ ์ ํ๊ฒ ๊ด๋ฆฌ๋๊ณ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐฉ์ง๋๋๋ก ์ฃผ์ํด์ผ ํฉ๋๋ค.์์ : ๊ณ์ฐ ์ง์ฝ์ ์ธ ์์ ์ Wasm์ ์ฌ์ฉํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ Wasm๊ณผ JavaScript ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํด์ผ ํ ์ ์์ต๋๋ค. WasmGC๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ฐ๋ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ ํ๊ฒฝ ๊ฐ์ ๊ณต์ ๋๋ ๊ฐ์ฒด์ ์๋ช ์ ์ ์คํ๊ฒ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค.
์ฑ๋ฅ ํ๋
WasmGC๋ก ์ต์ ์ ์ฑ๋ฅ์ ๋ฌ์ฑํ๋ ค๋ฉด ์ ์คํ ์ฑ๋ฅ ํ๋์ด ํ์ํฉ๋๋ค. ๊ฐ๋ฐ์๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์๋ํ๋ ๋ฐฉ์๊ณผ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ค๋ฒํค๋๋ฅผ ์ต์ํํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ์ดํดํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๊ฐ์ฒด ํ๋ง, ๊ฐ์ฒด ์์ฑ ์ต์ํ, ์ํ ์ฐธ์กฐ ๋ฐฉ์ง์ ๊ฐ์ ๊ธฐ์ ์ด ํฌํจ๋ ์ ์์ต๋๋ค.์์ : ์ด๋ฏธ์ง ์ฒ๋ฆฌ์ Wasm์ ์ฌ์ฉํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ค๋ฒํค๋๋ฅผ ์ต์ํํ๋๋ก ์ ์คํ๊ฒ ํ๋ํด์ผ ํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ๊ฐ์ฒด ํ๋ง๊ณผ ๊ฐ์ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉํ๊ณ ๊ฐ๋น์ง ์์งํด์ผ ํ๋ ๊ฐ์ฒด ์๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
WebAssembly ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋ฏธ๋
WasmGC๋ ๋น ๋ฅด๊ฒ ์งํํ๋ ๊ธฐ์ ์ ๋๋ค. Wasm ์ปค๋ฎค๋ํฐ๋ ์ฌ์์ ๊ฐ์ ํ๊ณ ์๋ก์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ ๋ฐ ์ ๊ทน์ ์ผ๋ก ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ๋ช ๊ฐ์ง ์ ์ฌ์ ์ธ ๋ฏธ๋ ๋ฐฉํฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.- ๊ณ ๊ธ ๊ฐ๋น์ง ์ปฌ๋ ์ ์๊ณ ๋ฆฌ์ฆ: GC ์ผ์ ์ค์ง๋ฅผ ๋์ฑ ์ค์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ์ธ๋๋ณ ๊ฐ๋น์ง ์ปฌ๋ ์ ๋ฐ ๋์ ๊ฐ๋น์ง ์ปฌ๋ ์ ๊ณผ ๊ฐ์ ๊ณ ๊ธ ๊ฐ๋น์ง ์ปฌ๋ ์ ์๊ณ ๋ฆฌ์ฆ์ ํ์ํฉ๋๋ค.
- WebAssembly ์์คํ ์ธํฐํ์ด์ค(WASI)์์ ํตํฉ: ๋น ์น ํ๊ฒฝ์์ ๋ ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํด WasmGC๋ฅผ WASI์ ํตํฉํฉ๋๋ค.
- JavaScript์์ ํฅ์๋ ์ํธ ์ด์ฉ์ฑ: ์๋ ๊ฐ์ฒด ๋ณํ ๋ฐ ์ํํ ๊ฐ์ฒด ๊ณต์ ์ ๊ฐ์ด WasmGC์ JavaScript ๊ฐ์ ์ํธ ์ด์ฉ์ฑ์ ์ํ ๋ ๋์ ๋ฉ์ปค๋์ฆ์ ๊ฐ๋ฐํฉ๋๋ค.
- ํ๋กํ์ผ๋ง ๋ฐ ๋๋ฒ๊น ๋๊ตฌ: ๊ฐ๋ฐ์๊ฐ WasmGC ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ์ดํดํ๊ณ ์ต์ ํํ๋ ๋ฐ ๋์์ด ๋๋ ๋ ๋์ ํ๋กํ์ผ๋ง ๋ฐ ๋๋ฒ๊น ๋๊ตฌ๋ฅผ ๋ง๋ญ๋๋ค.
์์ : WasmGC๋ฅผ WASI์ ํตํฉํ๋ฉด ๊ฐ๋ฐ์๊ฐ Java ๋ฐ C#๊ณผ ๊ฐ์ ์ธ์ด๋ก ๊ณ ์ฑ๋ฅ ์๋ฒ ์ธก ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ์ฌ WebAssembly ๋ฐํ์์ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ์ด๋ ์๋ฒ๋ฆฌ์ค ์ปดํจํ ๋ฐ ์์ง ์ปดํจํ ์ ์ํ ์๋ก์ด ๊ฐ๋ฅ์ฑ์ ์ด์ด์ค๋๋ค.
์ค์ฉ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ์ฌ์ฉ ์ฌ๋ก
WasmGC๋ WebAssembly์ ๋ํ ๊ด๋ฒ์ํ ์๋ก์ด ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํ์ฑํํ๊ณ ์์ต๋๋ค.์น ์ ํ๋ฆฌ์ผ์ด์
WasmGC๋ฅผ ์ฌ์ฉํ๋ฉด Java, C# ๋ฐ Kotlin๊ณผ ๊ฐ์ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์กํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ์ฝ๊ฒ ๊ฐ๋ฐํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ํ๋ฆฌ์ผ์ด์ ์ Wasm์ ์ฑ๋ฅ ์ด์ ๊ณผ WasmGC์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค.์์ : ์จ๋ผ์ธ ์คํผ์ค ์ค์ํธ ๋๋ ํ์ ๋์์ธ ๋๊ตฌ์ ๊ฐ์ ๋๊ท๋ชจ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ Java ๋๋ C#์ผ๋ก ๊ตฌํํ๊ณ WasmGC๋ฅผ ์ฌ์ฉํ์ฌ Wasm์ผ๋ก ์ปดํ์ผํ ์ ์์ต๋๋ค. ์ด๋ ํนํ ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ฒ๋ฆฌํ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ๊ณผ ์๋ต์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๊ฒ์
WasmGC๋ WebAssembly์์ ๊ฒ์์ ๊ฐ๋ฐํ๋ ๋ฐ ํนํ ์ ํฉํฉ๋๋ค. ๊ฒ์ ์์ง์ ์ข ์ข ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ๋ฐ ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ํฌ๊ฒ ์์กดํฉ๋๋ค. WasmGC๋ ์ด๋ฌํ ํ๊ฒฝ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ ๋ณด๋ค ํจ์จ์ ์ด๊ณ ํธ๋ฆฌํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.์์ : Unity ๋๋ Unreal Engine๊ณผ ๊ฐ์ 3D ๊ฒ์ ์์ง์ WebAssembly๋ก ํฌํ ํ๊ณ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํด WasmGC๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ํนํ ๋ฆฌ์์ค๊ฐ ์ ํ๋ ํ๋ซํผ์์ ๊ฒ์์ ์ฑ๋ฅ๊ณผ ์์ ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์๋ฒ๋ฆฌ์ค ์ปดํจํ
WasmGC๋ ์๋ฒ๋ฆฌ์ค ์ปดํจํ ์์๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฐพ๊ณ ์์ต๋๋ค. WebAssembly๋ ์๋ฒ๋ฆฌ์ค ํจ์๋ฅผ ์ํ ๊ฐ๋ณ๊ณ ์ด์ ๊ฐ๋ฅํ ์คํ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. WasmGC๋ ๋ด์ฅ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์์คํ ์ ์ ๊ณตํ์ฌ ์ด๋ฌํ ํจ์์ ์ฑ๋ฅ๊ณผ ํจ์จ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.์์ : ์ด๋ฏธ์ง๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ ๋ฐ์ดํฐ ๋ถ์์ ์ํํ๋ ์๋ฒ๋ฆฌ์ค ํจ์๋ Java ๋๋ C#์ผ๋ก ๊ตฌํํ๊ณ WasmGC๋ฅผ ์ฌ์ฉํ์ฌ Wasm์ผ๋ก ์ปดํ์ผํ ์ ์์ต๋๋ค. ์ด๋ ํนํ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฒ๋ฆฌํ ๋ ํจ์์ ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์๋ฒ ๋๋ ์์คํ
๋ฉ๋ชจ๋ฆฌ ์ ์ฝ ์กฐ๊ฑด์ด ๋ฌธ์ ๊ฐ ๋ ์ ์์ง๋ง WasmGC๋ ์๋ฒ ๋๋ ์์คํ ์๋ ์ ์ฉํ ์ ์์ต๋๋ค. WebAssembly์ ๋ณด์ ๋ฐ ์ด์์ฑ์ ์๋ฒ ๋๋ ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ๋ฐ ๋งค๋ ฅ์ ์ธ ์ต์ ์ ๋๋ค. WasmGC๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ๊ฐ์ํํ๊ณ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ ์ค๋ฅ์ ์ํ์ ์ค์ด๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
์์ : ๋ก๋ด ํ์ ์ ์ดํ๊ฑฐ๋ ํ๊ฒฝ ์ผ์๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ์๋ฒ ๋๋ ์์คํ ์ Rust ๋๋ C++์ ๊ฐ์ ์ธ์ด๋ก ํ๋ก๊ทธ๋๋ฐํ๊ณ WasmGC๋ฅผ ์ฌ์ฉํ์ฌ Wasm์ผ๋ก ์ปดํ์ผํ ์ ์์ต๋๋ค. ์ด๋ ์์คํ ์ ์ ๋ขฐ์ฑ๊ณผ ๋ณด์์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
WebAssembly ๊ฐ๋น์ง ์ปฌ๋ ์ ์ WebAssembly์ ์งํ์ ์์ด ์ค์ํ ๋ฐ์ ์ ๋๋ค. ํ์คํ๋๊ณ ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์์คํ ์ ์ ๊ณตํจ์ผ๋ก์จ WasmGC๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ์๋ก์ด ๊ฐ๋ฅ์ฑ์ ์ด๊ณ ๋ ๋์ ๋ฒ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด WebAssembly์ ๋ฐฐํฌ๋ ์ ์๋๋ก ํฉ๋๋ค. ๊ณผ์ ๊ฐ ๋จ์ ์์ง๋ง WasmGC์ ๋ฏธ๋๋ ๋ฐ์ผ๋ฉฐ ๋ค์ํ ํ๋ซํผ๊ณผ ๋๋ฉ์ธ์์ WebAssembly์ ์ง์์ ์ธ ์ฑ์ฅ๊ณผ ์ฑํ์ ์ค์ํ ์ญํ ์ ํ ๊ฒ์ ์ฝ์ํฉ๋๋ค. ์ธ์ด๊ฐ WasmGC ์ง์์ ๊ณ์ ์ต์ ํํ๊ณ Wasm ์ฌ์ ์์ฒด๊ฐ ์งํํจ์ ๋ฐ๋ผ WebAssembly ์ ํ๋ฆฌ์ผ์ด์ ์์ ํจ์ฌ ๋ ๋์ ์ฑ๋ฅ๊ณผ ํจ์จ์ฑ์ ๊ธฐ๋ํ ์ ์์ต๋๋ค. ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์์ ๊ด๋ฆฌํ ํ๊ฒฝ์ผ๋ก์ ์ ํ์ ๊ฐ๋ฐ์๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๋ถ๋ด ์์ด ํ์ ์ ์ด๊ณ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ์ง์คํ ์ ์๋๋ก ์ง์ํ๋ ์ ํ์ ์ด ๋ฉ๋๋ค.